57d30ead16611bed824d1fe10da79a5a02fb32ac,bundles/extensions/models/impl/src/main/java/org/apache/sling/models/impl/ModelAdapterFactory.java,ModelAdapterFactory,createObject,#Object#ModelClass#Result#,473

Before Change



        InjectCallback callback = new SetFieldCallback(object);

        Set<Field> requiredFields = new HashSet<Field>();

        InjectableField[] injectableFields = modelClass.getInjectableFields();
        for (InjectableField field : injectableFields) {
            if (!injectElement(field, adaptable, modelClass.getModelAnnotation(), registry, callback, result)) {
                requiredFields.add(field.getField());
            }
        }

        registry.seal();
        if (!requiredFields.isEmpty()) {
            result.addFailure(FailureType.MISSING_FIELDS, requiredFields, modelClass.getType());
            return null;
        }
        try {
            invokePostConstruct(object);
            return object;
        } catch (InvocationTargetException e) {
            result.addFailure(FailureType.FAILED_CALLING_POST_CONSTRUCT, e.getCause());
            return null;
        } catch (IllegalAccessException e) {
            result.addFailure(FailureType.FAILED_CALLING_POST_CONSTRUCT, e);
            return null;

After Change


        InjectableField[] injectableFields = modelClass.getInjectableFields();
        MissingElementsException missingElements = new MissingElementsException("Could not inject all required fields into " + modelClass.getType());
        for (InjectableField field : injectableFields) {
            RuntimeException t = injectElement(field, adaptable, modelClass.getModelAnnotation(), registry, callback);
            if (t != null) {
                missingElements.addMissingElementExceptions(new MissingElementException(field.getAnnotatedElement(), t));
            }
        }